.pragma library
Qt.include("Database.js")

//DBに登録するための種別
var SEARCH_KIND_SCREEN_NAME = "screen_name";
var SEARCH_KIND_HASH_TAG = "hash_tag";

var SEARCH_SYMBOL_SCREEN_NAME = "@";
var SEARCH_SYMBOL_HASH_TAG = "#";

// 検索データのオブジェクト
function SearchInfo(symbol){
    this.list = new Array();            // 現状の登録一覧
    this.selectedList = null;           // 最後の検索結果のリスト
    this.lastSearchValue = "";          // 最後に検索したキーワード
    this.symbol = symbol;               // 検索のきっかけの記号
}

// 検索データのインスタンスと配列に種類を登録
var _items = new Array();
_items[SEARCH_KIND_SCREEN_NAME] = new SearchInfo(SEARCH_SYMBOL_SCREEN_NAME);
_items[SEARCH_KIND_HASH_TAG] = new SearchInfo(SEARCH_SYMBOL_HASH_TAG);


// データベースにデータを登録する
function add(kind, value){
    var exist = false;
    for(var i=0; i<_items[kind].list.length; i++){
        if(value === _items[kind].list[i]){
            exist = true;
        }
    }
    if(!exist && (value !== null)){
        if(kind === SEARCH_KIND_HASH_TAG){
            console.debug(" " + kind + " add : " + value);
        }

        _items[kind].list.push(value);
    }
}

// データベースの情報をクリアする
function clear(kind){
}

// データを取得する
function getDatas(kind, value){
    var ret = new Array();

    console.debug(" list=" + _items[kind].list + " / val=" + value);

    for(var i=0; i<_items[kind].list.length; i++){
        if(_items[kind].list[i].length === 0){
        }else if(value.length === 0){
            ret.push(_items[kind].list[i]);
        }else{
            if(_items[kind].list[i].toLowerCase().indexOf(value.toLowerCase()) === 0){
                console.debug(" list add =" + _items[kind].list[i]);
                ret.push(_items[kind].list[i]);
            }
//            try{
//            }catch(e){
//                // 全角文字が入ってると例外なので
//                if(_items[kind].list[i].indexOf(value) === 0){
//                    console.debug(" list e add =" + _items[kind].list[i]);
//                    ret.push(_items[kind].list[i]);
//                }else{
//                    console.debug(" list e not add =" + _items[kind].list[i]);
//                }
//            }
        }
    }

    console.debug(" ret=" + ret);

    // 保存しておく
    _items[kind].selectedList = ret;
    _items[kind].lastSearchValue = value;

    return ret;
}

// データを取得する
function getInSelectedList(kind, index){
    return _items[kind].selectedList[index];
}
// 検索キーワードを取得する
function getLastSearchValue(kind){
    return _items[kind].lastSearchValue;
}
// 検索の記号を取得する
function getSearchSymbol(kind){
    return _items[kind].symbol;
}

/*
function readDatas(kind, key){
    var ret = undefined;
    db().transaction(
        function(tx) {
            createTable(tx);

            var rs = tx.executeSql('SELECT value FROM IncSearch WHERE key like ? and kind=?', [key + "%", kind]);

            if (rs.rows.length > 0) {
                ret = new Array();
                for(var i=0; i<rs.rows.length; i++){
                    ret.push(rs.rows.item(0).value);
                }
            }
        }
    )
    return ret;
}

function readData(kind, key) {
    var ret = undefined;
    db().transaction(
        function(tx) {
            createTable(tx);

            var rs = tx.executeSql('SELECT value FROM IncSearch WHERE key=? and kind=?', [key, kind]);

            if (rs.rows.length > 0) {
                ret = rs.rows.item(0).value;
            }
        }
    )
    return ret;
}

function saveData(kind, key) {
    db().transaction(
        function(tx) {
            createTable(tx);

            var currentValue = readData(kind, key);
            if (currentValue != value) {
                if (currentValue !== undefined) {
                    // 登録済みは何もしない
//                    tx.executeSql('UPDATE IncSearch SET kind = ? WHERE key = ?', [ kind, key ]);
                } else {
                    tx.executeSql('INSERT INTO Settings VALUES(?, ?)', [ key, kind ]);
                }
            }
        }
    )
}

function createTable(tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS IncSearch(key TEXT, kind TEXT)');
}
*/
